\begin{lstlisting}[frame=shadowbox, language=C, breaklines=true, basicstyle=\footnotesize]
 
#Parametros: dir buffer

#include <mips/regdef.h>
#include <sys/syscall.h>

#define TAM_INT          4

# para el frame

#define TAM_FRAME       32

#define POS_SRA_RA      24
#define POS_SRA_FP      20
#define POS_SRA_GP      16

   .text
   .align 2
   .globl desalocar
   .ent desalocar

desalocar:
   
# creacion del frame
   .frame        $fp, TAM_FRAME, ra   
   .set noreorder
   .cpload t9
   .set reorder

   subu          sp, sp, TAM_FRAME
   .cprestore POS_SRA_GP

   sw            ra,  POS_SRA_RA(sp)
   sw            $fp, POS_SRA_FP(sp)
   move          $fp, sp

# como los buffer en los primeros 4 bytes tiene el tam del mismo, o sea, a la dir q me pasan le resto 4

   subu          a0, a0, TAM_INT
   la            t9, myfree
   jal           t9
   
# se libera el stack frame
liberar:

   move          sp, $fp
   lw            ra, POS_SRA_RA(sp)
   lw            $fp, POS_SRA_FP(sp)
   addu          sp, sp, TAM_FRAME
   j             ra

   .end desalocar
\end{lstlisting}
